1
通用程式碼的藍圖
AI037Lesson 18
00:00

想像你是一位建築師。與為單一磚房繪製固定設計圖不同,你設計的是能適應木頭、鋼鐵或玻璃的總體 藍圖 可適應木材、鋼材或玻璃的藍圖。在 C++ 中,這稱為 泛型程式設計

1. 藍圖機制

一個 模板參數清單 (例如, template <typename T>) 引入稱為 模板類型參數的占位符。這些參數可作為類型的變數使用。例如,在 template <typename T> ostream &print(ostream &os, const T &obj)T 僅在函式被呼叫時才會決定。

2. 實例化

編譯器不會將模板本身編譯成機器碼。相反地, 實例化 發生:只有當提供具體的 模板參數 時,編譯器才會產生特定版本的程式碼。因此,定義通常必須放在標頭檔中。

藍圖compare<T>compare(int)compare(vector)錯誤:Sales_data

3. 編寫不依賴類型的程式碼

為了最大化重用性,請遵循 最佳實務:盡量減少需求。只使用 < 運算子(透過 less<T>)可以降低對類型的要求,比起使用 ><=>=。驗證通常會延後;編譯器一般無法在編譯模板本身的階段發現許多錯誤;大多數錯誤會在實例化時出現。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>